Il mistero del paragone '==' (peggio '===' ;-) tra due variabili del tipo IntegerIl paragone di due variabili del tipo Integer con l'operatore '==' da sempre 'false' anche se il contenuto delle variabili é identicoLa spiegazione la trovi quì: QA-Stack per quel che ho capito io, se Java si trova davanti a due variabili li paragona solo come variabili (nel senso tecnico), in ogni altro caso paragona il contenuto (il valore) delle variabili. Esempio: Dimostrazione e soluzioni Emissione: 1234 != 1234 da: true 1234 < 1234 da: false 1234 <= 1234 da: true 1234 == 1234 (è un numero) da: true 1234 == 1234 da: false :Perché???? 1234 >= 1234 da: true 1234 > 1234 da: false Soluzione: 1234.equals(1234) da: true 1234 * 1 == 1234 da: true (1234 - 1234) == 0 da: true 1) VarInteger.equals(1234) è la soluzione migliore ed anche quella ufficiale. 2) Multiplicare una o entrambe le variablili con '1' li trasforma in numeri, ed il paragone funziona (e la soluzione mi piace) 3) Sottrarre una variabile con l'altra da '0'... anche una soluzione, ma mi sembra poco elegante. IntParag.jar |
Il mistero del modificatore 'static'Il modificatore 'static' fa si che, la variabile sia la stessa in TUTTE le istanze della classe dove la variable è stata definita. Al contrario di altri linguaggi dove la variabile static rimane con lo stesso valore nell'ambito dell'istanza della classe.Nel esempio, se la variabile "wert" è modificata con "static" il valore di "d1" viene sovrascritto con il valore "d2", che viene "caricato" dopo. Soluzione: 1) NON usare il modificatore "static" 2) Se deve essere usato il modificatore "static", istanziare la classe solo una volta dietro l'altra e non contemporaneamente. |
@